package ar.edu.unsam.algo3.plantasvszombies.dominio

import java.util.ArrayList
import java.util.List
import org.uqbar.commons.model.Entity
import org.uqbar.commons.model.UserException
import org.uqbar.commons.utils.Observable

@Observable
class JardinZen extends Entity {
	@Property int lugares = 20
	@Property String tipo
	@Property List<Planta> plantines = new ArrayList<Planta>

	def agregarPlantin(Planta plantin) {
		verificarEspacioParaPlantar(plantin)
		plantines.add(plantin)
		plantin.jardinZen = this
	}

	def eliminarPlantin(Planta plantin) {
		plantines.remove(plantin)
	}

	def boolean existePlantin(Planta plantin) {
		plantines.contains(plantin)
	}

	def int lugaresDisponibles() {
		lugares - plantines.size
	}

	def void verificarEspacioParaPlantar(Planta plantin) {
		if (lugares <= plantines.size)
			throw new UserException("No hay mas lugares para plantar")
	}

	def Planta obtenerPlanta(Planta plantin) {

		//		if(!existePlantin(plantin)) throw new UserException("No existe esta planta en el Jardin Zen")
		plantin.clone as Planta
	}

	def String getDescripcion() {
		"Jardin Zen de " + tipo
	}

	override toString() {
		tipo
	}

}
